# 随机游⾛是由⼀系列简单的随机决策产⽣的⾏⾛路径
import matplotlib.pyplot as plt
from random_walk import RandomWalk

while True:
    rw = RandomWalk(num_points=50_000)
    rw.fill_walk()

    # 绘制所有点
    plt.style.use('classic') # 设置样式
    plt.xticks(())  # 不显示x轴刻度和标签
    plt.yticks(())  # 不显示y轴刻度和标签
    # plt.axis('off')  # 同时隐藏x轴和y轴的刻度线和标签

    fig, ax = plt.subplots(figsize=(15, 9), dpi=256) # 绘图窗口大小
    # 列表⻓度值等于游⾛包含的点的个数
    point_numbers = range(rw.num_points)
    # 最终的随机游⾛图从浅蓝⾊渐变为深蓝⾊，准确地指出从起点游⾛到终点的路径，
    ax.scatter(rw.x_values,
               rw.y_values,
               c=point_numbers,
               cmap=plt.cm.Blues,
               edgecolors='none', # edgecolors='none' 以删除每个点的轮廓。
               s=1)
    # ax.set_aspect()该函数用于设置matplotlib库中的axes对象的纵横比。
    # 'equal'参数表示绘图区域的x轴和y轴单位长度应当保持相同的比例，确保图形显示为等比。
    ax.set_aspect('equal')

    # 突出起点和终点
    ax.scatter(0, 0, c='green', edgecolors='none', s=100)
    ax.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)

    # # 隐藏坐标轴
    # ax.get_xaxis().set_visible(False)
    # ax.get_yaxis().set_visible(False)

    plt.show()
    keep_running = input("Make another walk? (y/n): ")
    if keep_running == 'n':
        break
